package com.zmn.oms.business.interfaces.messageV1.common;

import com.zmn.oms.model.dto.messageV1.ShortUrlDTO;
import com.zmn.oms.model.entity.orderappbind.OrderThirdAppBind;
import com.zmn.uuc.common.dro.user.UserThirdBaseDRO;

import java.util.Date;

/**
 * 类描述： 发送消息公共类
 *
 * @author yule
 * @date 2020/12/22 12:34
 */
public interface MessageGetSendInfoService {

    /**
     * 订单初始化绑定微信公众号
     *
     * @param orderId
     * @param zmnUserId
     * @param cityId
     * @param plat
     * @return
     */
    boolean bindWechatAppToOrder(Long orderId, Long zmnUserId, Integer cityId, Integer plat);

    /**
     * 获取订单绑定的微信公众号信息
     *
     * @param orderId
     * @param platWork
     * @return
     */
    OrderThirdAppBind getOrderWeChatBindInfoForOrderBy(Long orderId, Integer platWork);

    /**
     * 检查订单是否绑定公众号，未绑定检查绑定，容错处理
     * @param orderId
     * @param plat
     * @return
     */
    boolean checkOrderBindAppOrBind(Long orderId, Integer plat);

    /**
     * 获取订单绑定的微信公众号appId
     *
     * @param orderId
     * @param platWork
     * @return
     */
    String getOrderWeChatThirdAppId(Long orderId, Integer platWork);

    /**
     * 短连接
     * @param shortUrlDTO
     * @return
     */
    String getShortUrl(ShortUrlDTO shortUrlDTO);

    /**
     * 短连接
     * @param shortUrlDTO
     * @return
     */
    String getFullShortUrl(ShortUrlDTO shortUrlDTO);

    /**
     * 获取订单用户关联该订单公众号的openId
     * @param orderId
     * @param userId
     * @return
     */
    String getOrderUserRelationOpenId(Long orderId, Integer platWork, Long userId);

    /**
     * 直接获取微信公众号的openId
     *
     * @param orderId
     * @param userId
     * @param appId
     * @return
     */
    String getWeChatOpenIdByUserIdAndAppId(Long orderId, Long userId, String appId);

    /**
     * 获取appId
     * @param orderId
     * @param userId
     * @param cityId
     * @param plat
     * @return
     */
    OrderThirdAppBind getRemoteThirdAppBind(Long orderId, Long userId, Integer cityId, Integer plat);

    /**
     * 获取微信公众号的openId，并检查其是否关注，未关注返回空
     * @param orderId 订单id
     * @param userId  用户Id
     * @param appId   微信appId
     * @return
     */
    String getWeChatOpenIdAndCheckUserSubscribe(Long orderId, Long userId, String appId);

    /**
     * 根据手机号码获取关联第三方的用户信息
     *
     * @param orderId
     * @param telephone
     * @param appId
     * @return
     */
    UserThirdBaseDRO getWeChatUserInfoByTelephone(Long orderId, String telephone, String appId);

    /**
     * 根据用户ID 获取用户电话号码
     *
     * @param orderId
     * @param userId
     * @return
     */
    String getUserMobileByUserId(Long orderId, Long userId);

    /**
     * 判断用户为正式/临时用户
     *
     * @param orderId
     * @param userId
     * @return
     */
    boolean isTempUser(Long orderId, Long userId);

    /**
     * 判断是否非直营工程师
     *
     * @param masterId
     * @return
     */
    boolean isNotAgent(Integer masterId);

    /**
     * 检查订单是否有保修卡及获取保修卡号
     *
     * @param orderId
     * @return
     */
    String checkWarrantyAndGetWarrantyCode(Long orderId);

    /**
     * 删除百度表单消息
     *
     * @param orderId
     * @return
     */
    boolean deleteOrderBaiduSceneIds(Long orderId);

}
